package com.cskaoyan;

import com.cskaoyan.bean.User;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface UserMapper {

    User selectUserById(@Param("id") Integer id);


    // if标签
    // 判断传入的id是否 大于10，假如大于10，那么查询所有id>10的用户
    // 假如小于等于10，那么查询所有id<=10 的用户
    List<User> selectUserListById(@Param("id") Integer id);


    // 通过user对象动态的去查询 userList
    List<User> selectUserListByUserSelective(@Param("user") User user);


    // choose when otherwise
    // if else
    // 根据传入的id匹配条件
    // 当传入的id > 20 的时候，查询id> 20的用户
    // 否则，查询id<=20 的用户
    List<User> selectUserList2ById(@Param("id") Integer id);


    // 动态的根据Id修改User
    // 假如User中传入了name，那么我们就修改name
    // 假如user中传入了birthday，那就修改birthday
    int updateUserByIdSelective(@Param("user") User user);


    // 使用SET标签
    int updateUserByIdSelectiveUseSet(@Param("user") User user);


    // 插入一个用户，并且获取自增的id
    int insertUserReturnId(@Param("user") User user);

    // 插入一个用户，并且获取自增的id
    int insertUserReturnIdUseGeneratedKeys(@Param("user") User user);


    // in查询
    List<User> selectUserListByIdsUseList(@Param("ids") List<Integer> ids);


    List<User> selectUserListByIdsUseArray(@Param("ids") Integer[] ids);


    List<User> selectUserListByIdsUseListWithoutAnnotation(List<Integer> ids);


    List<User> selectUserListByIdsUseArrayWithoutAnnotation(Integer[] ids);

    // 批量插入
    int insertUserList(@Param("userList") List<User> userList);

    int insertUserArray(@Param("userArray") User[] userArray);


}
